51nod 1043 (dp)

1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码,
给出一个N,求长度为2N的幸运号码的数量。
(n<=1000)


题目链接

题解

  • 暴力的想,考虑前面 $n$ 个数的和与后面n个数的和相同,这很不好统计
  • 计数!!!$dp$啊,$dp$是解决计数问题的一大方法
  • 定义:$dp[i][j]:$前 $n$ 个数和为 $j$ 的方案数(包括前导 $0$ )
  • 转移:直接枚举当前为是$[0,9]$中哪一个暴力转移即可
  • 答案:由于前 $n$ 个数不能有前导 $0$,考虑第 $n$ 位不为 $0$ 的方案数位$dp[n][j]-dp[n-1][j]$,后n项的方案为$dp[n][j]$,即把前n个数反转一下。